iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0

函數的宣告及定義

函數的類型

  • 在JavaScript中函數可分為:
    1. 具名函數
    function func1(x, y){
        return x + y;
    }
    
    1. 匿名函數
    var func2 = function(x, y){
        return x + y;
    }
    
  • 參數、函數本體、傳回值是一個函數的基本三要素,在TypeScript中,函數的參數及傳回值皆須指定明確的類型:
function func1(x: number, y: number): number{   //具名函數定義類型的方式
        return x + y;
    }
var func3: (x: number, y: number) => number = func1;  //匿名函數定義類型的方式

可選參數

在TypeScript中有嚴格的規定,函數中定義的每個參數都必須有傳回值,否則會編譯異常。

  • 若是遇到某些參數需要支援選填時,就可以使用TypeScript的特殊語法,在函數參數後方加上「?」,可將此參數宣告為可選參數,表示該參數可以沒有傳回值
  • 可選參數必須在必填參數後方,因實際參數與形參在匹配時,是按照順序進行的。
function func5(success:boolean, msg?:string) {
    if (!success){
        console.log(msg);
    }
}

預設參數

  • 若可選參數沒有被賦值,則其預設值為undefined,TypeScript 支援為未賦值的參數提供預設值。
function func5(success:boolean, msg:string = "未定義的異常") {
    if (!success){
        console.log(msg);
    }
}

不定個數參數

  • TypeScript中除了可以定義一部份形參外,也可將多傳的參數歸納至一個預先定義的陣列形參中,進而細化約束參數的類型。
function func6(a:string, b:string, ...other:string[]) {
    console.log(a, b, other);
}
//a b ['c','d']
func6("a","b","c","d");

函數的多載

  • 多態:透過多載實現的,是物件導向程式設計中的重要特性。
  • 多載:相同函數名稱,因傳入的參數類型不同而執行不同的邏輯。
//宣告兩個多載函數
function func7(a:number):number;
function func7(a:string):string;
function func7(a:number | string):number | string {
    if (typeof a === 'number'){
        console.log("執行參數為數值的邏輯");
    }
    if (typeof a === 'string'){
        console.log("執行參數為字串的邏輯");
    }
    return a;
}
//編譯正常
var res1 = func7(1);
//會報類型不匹配錯誤
var res2 = func7("Hello");
  • 關於TypeScript的一些基本概念都講得差不多了,下一篇會開始介紹有關TypeScript中的物件導向程式設計!

上一篇
Day 9
下一篇
Day 11
系列文
從零開始學習TypeScript、Vue.js !!13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言